package com.landun.market.repository;

import org.apache.ibatis.annotations.Param;

/**
 * @author jiang.chuan
 * @date 2018-05-05
 */
public interface IBaseRepository<T, PK> {
    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 单个实体对象
     */
    T load(PK id);

    /**
     * 创建单个或多个对象
     *
     * @param entities 需要新增的实际数据
     * @return 处理成功的行记录数
     */
    Integer create(T... entities);

    /**
     * 修改单个对象
     *
     * @param entity 需要修改的实际数据
     * @return 处理成功的行记录数
     */
    Integer update(T entity);

    /**
     * 更新数据状态
     *
     * @param state 状态
     * @param ids   主键
     * @return 处理成功的行记录数
     */
    @SuppressWarnings("unchecked")
    Integer updateState(@Param("state") int state, @Param("ids") PK... ids);
}
